1. Technical Field
The present invention relates to volume rendering, and more particularly, to polygon smoothing in texture-based volume rendering.
2. Discussion of the Related Art
A three-dimensional (3D) volume array of data, typically used in volume rendering, is assembled using a series of consecutive “slices” through a solid body being scanned, where each slice is a two-dimensional (2D) image array of data points. Each grid value of a 2D image array is called a picture element, or “pixel”, while each grid value of a 3D volume array is called a volume element, or “voxel”. The derivation of a 3D volume array is known in the art and readily obtainable using systems such as magnetic resonance (MR) imaging systems, computed tomography (CT) scanning systems, positron emission tomography (PET), and ultrasound scanning.
Methods for generating a 2D image from volumetric data can be classified as indirect and direct volume rendering techniques. Indirect methods generate and render an intermediate representation of the volume data, while direct methods display voxel data by evaluating an optical model, which describes how the volume emits, reflects, scatters, absorbs, and occludes light. Voxel densities are mapped to physical quantities describing light interaction at respective points in a 3D-space. During image synthesis, light propagation is computed by integrating light interaction effects along viewing rays based on an optical model. The corresponding integral is known as the volume rendering integral.
Object-order rasterization rendering algorithms, such as those implemented in consumer graphics hardware, are typically based on a scan-conversion of primitives (e.g., polygons, lines, and points). Data values generated during the scan-conversion (e.g., fragments) are blended into a frame buffer of the graphics hardware. Because volume data does not consist of such primitives, proxy geometry is defined for each individual slice through the volume data. Each slice is textured with corresponding data from the volume. The volume is reconstructed during rasterization of the slice polygon by applying a convolution of the volume data with a filter kernel. The entire volume is represented by a stack of such slices.
Conventional texture-based volume rendering techniques can be classified as view-aligned or object-aligned slicing methods depending on the orientation of the proxy geometry. For view-aligned slicing, the proxy geometry is oriented orthogonal to the viewing direction of a virtual camera. The volume data is represented by a block of voxel data (e.g., a 3D texture). For object-aligned slicing, the proxy geometry is oriented orthogonal to three main axes of the volume. A large number view- or object aligned slices of this voxel data are reconstructed during rendering using the proxy geometry, whose vertices are assigned texture coordinates that are interpolated by the graphics hardware to access the data. An example of a conventional volume rendering using 2D textures is shown in FIG. 1A and a conventional rendering using a 3D texture is shown in FIG. 1B.
Slicing, illustrated by the sliced polygons in FIGS. 1A and 1B, is a common technique used in graphics hardware-accelerated volume rendering. It provides good performance by load balancing a volume rendering algorithm between a vertex and fragment processor of the graphics hardware. In principle, slicing a volume using view-aligned slice polygons corresponds to stepping along straight rays while raycasting and is performed in a vertex stage. In contrast to the traditional raycasting algorithm, which steps along single rays one at a time, slicing steps along all rays at the same time. The integration along the rays is performed in the fragment stage.
One of the disadvantages of slicing is that slicing artifacts occur on slice boundaries as indicated by the arrows shown, for example, in FIG. 5A. This is due to adjacent slice polygons intersecting a bounding box of the volume having a small displacement. In other words, a slice polygon will cover a portion of the screen that is not covered by an adjacent slice polygon due to the perspective or orthographic projection. At the boundary of this region of the screen to the region that is covered by both polygons the sudden change of the number of integration steps typically leads to a discontinuity in the rendering result. These artifacts can be observed frequently in images generated with a conventional texture-based volume rendering algorithm.
To improve the quality of a volume rendered image additional slice polygons are computed thus decreasing an inter-slice distance and increasing the sampling rate. However, when increasing the sampling rate, the performance of the graphics hardware decreases. Therefore, relatively small sampling rates are used in volume rendering to achieve high frame-rates. However, this technique still results in a volume rendered image that includes artifacts.
Accordingly, there is a need for a volume rendering technique that reduces the effects of artifacts in a volume rendered image and that increases the performance of graphics hardware.